home *** CD-ROM | disk | FTP | other *** search
-
-
- ROBOTANK
-
- BECAUSE "WAR IS HELL!"
-
-
-
- VERSION 1.0
- RELEASE DATE 6/89
-
-
- ROBOTANK was written by:
- ALEXANDER WALSH
-
-
- 31 Cumberland Cres.
- St. John's, Newfoundland
- CANADA, A1B-3M4
-
- All rights reserved.
-
-
-
- System Requirements
- ROBOTANK 1.0 will run on all IBM PC, XT, AT and 100%
- compatible computers. It requires a minimum of 512K RAM and
- one floppy drive. ROBOTANK runs on a CGA video display, and
- requires DOS version 2.0 or higher.
-
-
- About ROBOTANK
-
- ROBOTANK is a very player involved tank battle game now
- available for the IBM PC and it's compatables. ROBOTANK
- allows the player to create, write, test, and debug the
- computer logic for an electronic tank with a variety of
- weapons and hunting options. It allows various players to
- battle up to ten of their creations in several different
- graphical "battleground" setting and watch the results of
- their efforts unfold before their eyes.
- ROBOTANK incorporates a powerful-but-simple tank battle
- language called TINK, which allows the player to program his
- tank to practice ANY variety of offensive or defensive
- strategies against the enemy. So, not only does the player
- get to enjoy the thrill of battle, but also the experience
- of writing working computer programs.
-
- ROBOTANK as a language for tank combat
-
- ROBOTANK is unlike its counterparts in the arcade game
- market in that is a complete battle computer language. As
- such, it necessarily lacks the intuitively obvious but
- limiting user interface found in such programs as HEAVY
- METAL and ARCTICFOX.
-
- Although ROBOTANK seems at first a bit more difficult
- to use than these other products this is only because the
- program's commands must be typed in rather than picked from
- a list. This language interface offers much more versatility
- and flexabilty and does not require odd keyboard sequences
- or special hardware to utilize.
-
- Here is an example of a complete ROBOTANK battle
- program for a tank which chases and attacks enemy vehicles.
- Notice how straight-forward the program is and how similiar
- it is to what a person playing a typical tank arcade game
- would actually do:
-
- ----------------------------------------------------------------
- make dir
-
- :align ; Turn the tank's turrent ...
- aim ctdir ; toward the tanks front.
- jneq ctdir,cgdir,:align ; Keep turning until there.
-
- lock 1 ; Syncronize the turrent and tank.
-
- :again
- scope dir ; Check scope for enemy location.
- face dir ; Turn in that direction.
- jneq ctdir,dir,:again ; Are we facing it yet? No, go back.
- fire ; Yes, ATTACK
- move ; and move towards it
- goto :again ; And do it again!!!
-
- ----------------------------------------------------------------
-
- Remember that in learning any language, proficiency
- comes with practice. With just a little practice, you will
- find the TINK programming language for combat capable of
- fulfilling your most creative battle plans with ease.
-
- Creating a tank for combat with ROBOTANK
-
- The creation of a battle tank with ROBOTANK begins in
- the ROBOTANK control center (ROBOTANK.EXE). Here, you give
- your tank a name, a particuliar chassis size, and a
- selection of weapons and additional hunting devices. These
- selections are based on the type of tank you have imagined.
- For example, a patrol tank would have to be fast and have a
- wide selection of scanning options, while having few
- weapons. Meanwhile, the offensive tanks would have heavy
- armor and weaponry, keeping tracking equipment to a minimum.
-
- You would then move on to the tank logic editor
- (selected from the on-screen menu bar). Here, you write your
- program line by line, perhaps adding previously-saved or
- 'stock' subroutines. Here also you tell how your tank should
- go about it's planned duties, how it should react when hit,
- what to do when it spots an enemy, etc.
-
- Then, after selecting an appropriate terrain, you test
- your tank in the battlefield, against either supplied
- enemies, or ones of your own or your friends design. If the
- tank does not perform the way you wished, go back to the
- editor, fix the errors, and try again.
-
- Finally, you call up your friends and tell them to
- bring over the tanks they have designed, and battle each off
- in a series of round-robin tournaments. May the best tank
- win.
-
-
- Starting ROBOTANK: the main menu
-
- If you are in the ROBOTANK subdirectory, typing
- ROBOTANK at the system level prompt (C>) will bring up the
- ROBOTANK main menu and a screen that looks similiar to this:
-
- To select from the menu or picklist, press the arrow
- keys until the option you want is highlighed, then press
- return.
-
- FILE/LOAD: allows you to load an existing TANK
- SPECIFICATIONS SHEET from the disk.
-
- FILE/SAVE: allows you to save a new TANK SPECIFICATIONS
- SHEET to the disk.
-
- FILE/SHELL: allows you to exit to a DOS shell. Typing
- EXIT at the DOS prompt returns you to
- ROBOTANK.
-
- FILE/EXIT: exits the ROBOTANK program, returning you to
- DOS.
-
- CONFIG/NAME: allows you to modify the name of your tank.
-
- CONFIG/CHASSIS: allows you to select the chassis size of your
- tank.
-
- CONFIG/WEAPONS: allows you to select which weapons your tank
- should carry, each one has different ranges
- and damage ratings.
-
- CONFIG/EXTRAS: allows you to select which hunting/tracking
- equipment your tank should carry.
-
- EDIT: Enter the ROBOTANK program editor
-
- TEAMS/PLAYERS: allows you to enter the names of the tanks
- that will compete on the battleground.
-
- TEAMS/NOTEAM: allows you to define which tanks will not
- belong to any particular team.
-
- TEAMS/TEAM A: allows you to define which tanks will belong
- to TEAM "A"
-
- TEAMS/TEAM B: allows you to define which tanks will belong
- to TEAM "B"
-
- TERRAIN/GRASS: selects a grassy terrain for battle
-
- TERRAIN/SWAMP: selects a swamp terrain for battle
-
- TERRAIN/FOREST: selects a forest terrain for battle
-
- TERRAIN/VILLAGE: selects a village terrain for battle
-
- BATTLE: Take the currently selected contestants into
- battle
-
-
- Tank chassis type descriptions:
-
- Your tank may have one of three different chassis
- types; LIGHTWEIGHT, REGULATION, and HEAVYWEIGHT. The
- lightweight chassis has a move rate of 1:1 (which means it
- will move once for every MOVE command issued), while the
- regulation and heavyweight tanks have move rates of 2:1 and
- 3:1 respectively. However, the lightweight tank has a
- maximum payload of 1000 lbs, as compared to 2000 and 3000 of
- the regulation and heavyweight chassis's.
-
- Damage capacity is another concern when choosing a
- chassis-type. The lightweight type may sustain up to 10
- points of damage, in relation to the 20 points of the
- regulation, and 30 points of the heavyweight chassis-types.
- Choosing the correct type of tank frame is one of the most
- critical decisions in making a succesful tank. It must be
- based on the purpose you have intended for you vehical. A
- small and fast patrol tank, will be much more efficient than
- a slow clunky one, while a lightweight tank will never
- survive intense battle! The choice is yours.
-
- Choosing a tanks weaponry
-
- Weapons are rated on a variety of points, which are:
-
- Range how far a shot will travel
- Damage what sort of injuries it can cause to an
- enemy tank
- Reload Time how quickly can you shoot multiple shots
- Rounds how many shots can the tank carry for that
- weapon
- Weight how much the gun and ammo weight in pounds
- Other special features that make that weapon unique
-
- If your tank requires weaponry, you may use the table
- below to help you choose the ones that will serve your
- purpose best:
-
- RANGE DAMAGE RELOAD ROUNDS WEIGHT
- OTHER
- MACHINE 8mm 50 1 0 50 100
- MACHINE 16mm 45 2 0 30 200
- LASER 10 8 9 40 750 *1
- CANNON 15 15 5 5 800
- ROCKET 40 10 4 10 650
- MINE 1 10 0 1 25 *2
- RADIO MINE 1 10 0 1 50 *3
-
- NOTES:
-
- *1 The range of laser fire is covered in ONE move, not one unit
- per move as with other weapons.
-
- *2 A mine will stay in location until a tank hits it. It is
- then destroyed.
-
- *3 A radio mine has the same characteristics as a normal mine
- (see note *2). However, a radio mine will transmit the
- message "99, x, y" (where x and y are the co-ordinates of
- the mine when it exploded) on the channel the tank was set
- to when the mine was released.
-
- The ROBOTANK Editor
-
- If you have selected the EDIT option from the main
- menu, you will be in the ROBOTANK editor. The screen should
- have a few lines at the top that look as follows:
-
- FILE: C:\ROBOTANK\PATROL.TXT IN Line: 1 Col: 1
- Block Search Go to Text format Window File F10 for pulldown
-
-
- This information relates to the current file and the
- tools available to manipulate it. At the left is the editor
- menu bar, this is similiar to the main control panel menu in
- operation. Press F10 to access the menu bar, and use the
- arrow keys to move the highlight bar to the desired option
- and press enter to select it.
- At the right is the current cursor column and line
- number. This information is for reference, especially when
- locating errors (which are reported by line number). Also
- indicated is the status of the INS key on your keyboard. If
- INSERT mode in ON, then characters you type will be inserted
- before the character just to the right of the cursor. If
- INSERT mode is OFF, then characters to the right of the
- cursor will be overwritten.
-
- Basic program editing features at as follows:
-
- ARROW KEYS Move cursor around document
- PGUP, PGDN Move cursor around document
- HOME Move cursor to start of line
- END Move cursor to end of line
- DEL Erase character at right of cursor
- BACKSPACE Erase character at left of cursor
- F10 Move up into menu bar
- CTRL-Y Delete line
- CTRL-K B Block start
- CTRL-K K Block end
- CTRL-K H Hide/Show block
- CTRL-K C Copy block
- CTRL-K V Move block
- CTRL-K Y Erase block
- CTRL-K W Write block to disk
- CTRL-K R Read block from disk
-
- ROBOTANK program compiler error codes
-
- After selecting the BATTLE option from the main menu,
- ROBOTANK will attempt to load each tank into memory and
- process each as they would be in battle. If the situation
- should arise that there is a mistake in the program, or some
- other difficulty arises, ROBOTANK will display an error
- message. The message is in the form:
-
- Syntax error L23
- - GOGO newline
-
- Which tells the error and the line number in which the
- error occured. Below the error message, ROBOTANK will
- display the problem causing line.
-
- After all the programs have been loaded, and errors
- have occured, control will return to the main menu and the
- battle will be aborted until the tank in error is repaired.
- Otherwise, battle will commence!
-
- Some error message you may receive are:
-
- COMPILER ERROR An internal error out of your control, this
- should be reported to the author.
-
- SYMBOL EXISTS A symbol defined in the tanks program (with
- the MAKE command) has already been defined
- earlier.
-
- SYMBOL UNDEFINED A symbol is used in the program, which was
- not defined with the MAKE command.
-
- SYNTAX ERROR The most common error! A syntax or spelling
- mistake may occur due to a stray character in
- the file or a misplaced command name, etc.
-
- SYMBOL REQUIRED AS FIRST ARGUMENT This error states that
- the first argument
- following the actual
- command must be a symbol
- (defined with the MAKE
- command) and not a
- constant or line label.
-
- LABEL ALREADY USED A label was defined (by preceeding the
- label name with a colon), that was used
- previously in the program.
-
- LINE REFERENCE NOT ALLOWED AS ARGA line reference was
- supplied as an argument
- to a command when a
- symbol or constant was
- expected.
-
- LINE REFERENCE REQUIRED A symbol or contant was supplied as
- an argument to a command when a
- line reference was required.
-
- TOO FEW/MANY ARGUMENTS SUPPLIED The incorrect number of
- arguments were supplied for
- the operation of a command.
- Check the commands context
- again in the manual.
-
- OUT OF RAM Your computer has insufficient RAM to load the
- desired tank programs.
-
- Using the ROBOTANK battle simulator
-
- Once battle has begun, the screen will show an above
- view of the battlefield. It will also be tracking the action
- of a particular tank. The name and vital information of that
- tank is displayed on the bottom four lines of the display.
- This information looks something like this:
-
- 1. PATROL
- DAMAGE: 10
- VAR[00] = 34
- Press SPACE for next, or ESC to end battle
-
- The simulator is now in AUTOMATIC mode, which means
- that it will adjust it's display in order to keep the
- displayed tank on-screen. To view the next tank on the list,
- press the SPACE BAR. The information on the bottom of the
- screen will update and this new tank will be tracked.
-
- If you wish to move the screen in a manner different to
- that of the simulator, press the ARROW KEYS in the direction
- you wish to move. This will place you in MANUAL mode (Press
- the space bar to resume to AUTOMATIC mode).
-
- If you know the number of the tank you wish to monitor,
- simply press the number of the tank (from 1 to 9, or 0 for
- tank number 10). If that tank is not available, tracking
- will be moved to the next active tank.
-
- On the bottom of the display is the line
-
- VAR[xx] = yy
-
- where xx and yy are integer numbers. They represent the
- contents of the variables that tank is using internally. The
- first eleven variables are reserved for the predefined
- constants, these are defined as follows:
-
- 0 - WHEREX 1 - WHEREY 2 - CGDIR 3 - CTDIR
- 4 - LOADED 5 - HIT 6 - NOMOVE 7 - TEAM
- 8 - MYTEAM 9 - BLOCKAGE 10- MESSAGE 11- CHANNEL
-
- After these variables, the variable defined in the
- tanks program are listed (in order of the occurance of the
- MAKE command in the program).
-
- Other keys which may be used while in the simulator are:
-
- ESC End battle and display results
- . View next variable contents
- , View previous variable contents
- ENTER Update screen information display
-
- ROBOTANK COMMANDS
-
- ----------------------------------------------------------------
- var
- Is a symbol/variable of up to 15 characters.
- The first character must be A-Z
- (lower-case converted to upper-case)
- These are created with the MAKE command (see below)
-
- :line
- Is a line-reference with the same spec's as a symbol
-
- num
- Can be either a symbol or a numeric constant (-32000 to 32000)
- ----------------------------------------------------------------
-
- MAKE var
- Make space for symbol named "var"
- (should appear at the start of source file)
-
- SELECT num
- Select weapon "num" as follows:
- 1 = MACHINE GUN 8mm
- 2 = MACHINE GUN 16mm
- 3 = LASER
- 4 = CANNON
- 5 = ROCKET
- 6 = MINE
- 7 = RADIO MINE
-
- JEQ num1,num2,:line
- if num1 = num2 go to ":line"
-
- JLT num1,num2,:line
- if num1 < num2 go to ":line"
-
- JGT num1,num2,:line
- if num1 > num2 go to ":line"
-
- JNEQ num1,num2,:line
- if num1 <> num2 go to ":line"
-
- LEFT
- Turn tank counter-clockwise
-
- RIGHT
- Turn tank clockwise
-
- GLEFT
- Turn GUN counter-clockwise
-
- GRIGHT
- Turn GUN clockwise
-
- SET var,num
- Sets symbol "var" to "num"
-
- ADD var,num
- Adds "num" to the current value of "var"
-
- RAND var,num
- Places a random value from 1-"num" into "var"
-
- MOVE
- Move tank in current direction and sets the NOMOVE register
- (see below)
-
- GOTO :line
- Move program execution to ":line"
-
- FIRE
- Fire currently selected weapon in current gun direction
-
- CALL :line
- Call sub-routine beginning at ":line"
-
- SCOPE var
- Places a number from 1 to 8 in "var" corresponding to the
- general direction of the closest enemy tank. Returns a 0 if
- no other enemy tank is present.
-
- RETURN
- Return from sub-routine which was accessed via the CALL
- command.
-
- RADAR var
- Places a 0 in "var" if no other enemy tank within 40 units
- of players tank otherwise contains a number from 1 to 40
- corresponding to the distance the other tank is away.
-
- NOTE: if more than one tank is within 40 units, RADAR will
- return the distance to the closest enemy tank.
-
- SCAN var, num
- Places a 1 in "var" if an enemy tank is present in the
- direction indicated by "num", otherwise SCAN places a 0 in
- var.
-
- AUTO num
- Set automatic tank movement ON when NUM is greater than
- zero, or OFF when NUM =0.
-
- When AUTO is ON, the tank will attempt to move after the
- execution of EVERY command without having to issue a MOVE
- command.
-
- LOCK num
- Set automatic GUN and TANK syncronization ON when NUM is
- greater than zero, or OFF when NUM = 0.
-
- When automatic gun and tank sync is ON, whenever a LEFT or
- RIGHT command is called, the tanks gun will move in that
- same direction. IE: if tank is in position 3 and gun is in
- position 5, after a LEFT command the tank will be at 2 and
- the gun will be at 4. However, GLEFT and GRIGHT do NOT
- effect the position of the tank, they may be used freely.
-
- CHANNEL num
- Sets the tanks current radio channel to NUM. All following
- TX and RX commands will affect that channel.
-
- TX num1, num2, num3
- Transmit message NUM1, NUM2, and NUM3 out on the radio
- channel currently set by the CHANNEL command.
-
-
- RX sym1, sym2, sym3
- Read in a received message into symbols SYM1, SYM2, and
- SYM3. If there was no message available then SYM1-3 will
- contain zeros, otherwise they will contain the values sent
- by the TX command. NOTE: The radio must be monitoring the
- channel with the CHANNEL command in order to capture the
- information.
-
- FACE num
- Turns the TANK the best way (LEFT or RIGHT) in order to face
- direction NUM.
-
- If it is equal to move LEFT or RIGHT in order to reach the
- destination, FACE will randomly pick either LEFT or RIGHT.
-
- AIM num
- Turns the tanks GUN the best way (LEFT or RIGHT) in order to
- face direction NUM.
-
- If it is equal to move LEFT or RIGHT in order to reach the
- destination, FACE will randomly pick either LEFT or RIGHT.
-
- CONV numX,numY,var
- Calculates the direction needed to reach coordinates
- (numX,numY) from the tanks current location (whereX,
- whereY). The required direction is placed in VAR.
-
- TANK and GUN Directions:
-
- 1
- 8 | 2
- \ | /
- 7 --- + --- 3
- / | \
- 6 | 4
- 5
-
- PREDEFINED SYMBOL CONSTANTS:
-
- WHEREX
- Holds the tanks current X co-ordinate from 1 to 119
-
- WHEREY
- Holds the tanks current Y co-ordinate from 1 to 74
-
- CGDIR
- Holds the tank gun's current direction from 1 to 8
-
- CTDIR
- Holds the tanks current direction from 1 to 8
-
- LOADED
- Contains a 1 when ready to fire, or 0 when loading
-
- HIT
- Contains a 1 when your tank has been hit and 0 otherwise.
- This register is reset to 0 everytime it is used.
-
- NOMOVE
- Holds a 1 when your tank is prevented from moving by a wall
- or other tank.
- It is set everytime the MOVE command is executed.
-
- TEAM
- Contains the team of the tank detected by the last RADAR,
- SCAN, or SCOPE command.
-
- 0 = NONE
- 1 = TEAM A
- 2 = TEAM B
-
- MYTEAM
- Contains your team identification.
-
- 0 = NONE
- 1 = TEAM A
- 2 = TEAM B
-
- MESSAGE
- Contains 1 if there is a message waiting to be read on the
- current radio channel or else it will contain 0
-
- BLOCKAGE
- Contains a number corresponding to the type of object
- blocking the movement of a tank, as follows:
-
- 0 = NO OBJECT
- 1 = FIXED OBJECT (Tree, wall, rubble, etc)
- 2 = ANOTHER TANK
-
- CHANNEL
- Contains the radio channel currently set with the CHANNEL
- command.
-
- Final Notes:
-
- The demonstration diskette is NOT a complete working
- version, the following features are not implemented yet, but
- they WILL be included in the final version:
-
- - The SELECT command will select other weapons, but each
- weapon has the same abilities (same range, same damage,
- same re-load speed).
-
- - Tank weight is not taken into account yet, a
- light-weight tank chassis moves the same speed as a
- heavy one. Also, you can add all the options you wish
- without penelty.
-
- - Moveing over a swamp terrain does not slow down your
- tank as it should do.
-
- - Not all the math commands are in place, ADD does work,
- while SUB, MULT, DIV do not and are not recognized.
-
- - MINES are not working, you cannot use these at all
- (PS. A radio mine is a mine that transmits it current
- location on a set channel before it blows up ... useful
- for tracking).
-
- - All tanks die when they have recieved 30 points of
- damage. In the final version, lighter tanks will
- destroy easier than heavier ones.
-
- - Unlimited shots. In the final version, your would only
- have a certain number of shots with each weapon.
-
- Here is a list of some other ideas I have planned to
- include in the final version of the game, it is in these
- features that I can see the programs true flexability coming
- through:
-
- - Better looking graphics ... my graphical talents are a
- bit lacking.
-
- - Support for VGA
-
- - Sound! I have not touched the sound aspect of the game
- yet.
-
- - A full program debugger for viewing program source code
- while in battle (this will slow down combat speed, but
- it would definitely be required for the novice player).
-
- - A new program editor. Now I am using a modified version
- of MICROSTAR from the Borland TURBO PASCAL editor
- toolbox.
-
- - Split screen display for viewing two tanks at once
- during combat.
-
- - A variety of new battle commands including:
- LOOP a command to provide FOR/NEXT loop abilities
- CONTACT will tell if a fired shot hit it's target.
- and many more.
-
- - Marking TEAM A as a "good team" and TEAM B as a "bad
- team" for use with other features (see next upgrade).
-
- - Some simulator controlled features, such as running
- villagers that the tanks can try to rescue or shoot
- (depending on their team), or rolling boulders, etc.
-
- - A selection of new tank attachments such as cloaking
- devices, pontoons for swamp travel, a copter-top for
- air travel, etc.
-
- - Expanded program text commands such as "INCLUDE
- filename", to include text from another file or "CHAIN
- filename" to execute another pre-compiled tank file.
-
- There are many other features that could be added, but
- for the purposes of this demo I have only mentioned a few.
-
- I hope you enjoy the game as must as I have, and hope
- to hear from you soon.
-
-
- Sandy Walsh
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-